﻿using Bot.Domain.Entities;
using Bot.Domain;

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Bot.Domain.Bot
{
    public class BotDto : BaseDto
    {
        public BotDto()
        {
            IsActive = true;
            IsDeleted = false;
        }

        [Required]
        public int SiteId { get; set; }
        [Required]
        [MaxLength(24)]
        public string Language { get; set; }

        [Required]
        [MaxLength(384)]
        public string BotEngineAppId { get; set; }

        [Required]
        [MaxLength(36)]
        public string Engine { get; set; }

        [Required]
        [MaxLength(1280)]
        public string WebhookTargetUrl { get; set; }

        [Required]
        [MaxLength(128)]
        public string BotName { get; set; }

        [Required]

        public decimal VersionId { get; set; }

        [Required]
        public string Avatar { get; set; }


        [MaxLength(4000)]
        public string Glossary { get; set; }

        [Required]

        public bool IsActive { get; set; }

        [Required]
        public Dictionary<string, List<IntentResponsesDto>> GreetingMessage { get; set; }
        public Dictionary<string, UnrecognizedMessage> NoAnswerMessage { get; set; }
        public Dictionary<string, UnrecognizedMessage> PossibleAnswerMessage { get; set; }

        [Required]
        [MaxLength(1280)]
        public string NoResponseMessage { get; set; }

        [Required]

        public bool IsShowAgentLinkWhenNoResponse { get; set; }

        [Required]
        [MaxLength(1280)]
        public string NoResponseTextWhenAgentIsOnline { get; set; }

        [Required]
        [MaxLength(1280)]
        public string NoResponseTextWhenAgentIsOffline { get; set; }

        [Required]
        [MaxLength(1280)]
        public string NotHelpfulMessage { get; set; }

        [Required]
        public bool IsShowAgentLinkWhenNotHelpful { get; set; }

        [Required]
        [MaxLength(1280)]
        public string NotHelpfulTextWhenAgentIsOnline { get; set; }

        [Required]
        [MaxLength(1280)]
        public string NotHelpfulTextWhenAgentIsOffline { get; set; }

        [Required]
        [MaxLength(1280)]
        public string PossibleResponsesMessage { get; set; }

        [Required]
        public int PossibleResponsesThreshold { get; set; }

        [Required]
        public bool IsShowAgentLinkWhenPossibleResponsesThreshold { get; set; }

        [Required]
        [MaxLength(1280)]
        public string PossibleResponsesExceedThresholdMessage { get; set; }

        [Required]
        [MaxLength(1280)]
        public string TextWhenAgentIsOnline { get; set; }

        [Required]
        [MaxLength(1280)]
        public string TextWhenAgentIsOffline { get; set; }

        [Required]
        public DateTime UpdateTime { get; set; }

        [Required]
        public bool IsDeleted { get; set; }

        [Required]
        [MaxLength(1280)]
        public string TransferAgentMessage { get; set; }

        [Required]
        [MaxLength(1280)]
        public string LeaveAMessageClickedMessage { get; set; }

        [Required]
        [MaxLength(1280)]
        public string RequestVisitorLocationMessage { get; set; }

        [Required]
        [MaxLength(1280)]
        public string LocationButtonText { get; set; }

        [Required]
        [MaxLength(1280)]
        public string SubmitButtonText { get; set; }

        [Required]
        [MaxLength(1280)]
        public string CancelButtonText { get; set; }

        [Required]
        [MaxLength(1280)]
        public string ConfirmButtonText { get; set; }

        [Required]
        public int HighConfidenceScore { get; set; }

        [Required]
        public int NoAnswerScore { get; set; }
        public List<string> SupportChannels { get; set; }
    }
}
